{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 任务描述\n",
    "\n",
    "1. 请在Capital Bikeshare （美国Washington, D.C.的一个共享单车公司）提供的自行车数据上进行回归分析。训练数据为2011年的数据，要求预测2012年每天  \n",
    "  的单车共享数量。\n",
    "  \n",
    "2. 文件说明： day.csv: 按天计的单车共享次数（作业只需使用该文件）  hour.csv: 按小时计的单车共享次数（无需理会） readme：数据说明文件\n",
    "\n",
    "3. 字段说明 Instant记录号 Dteday：日期  Season：季节 1=春天、2=夏天 3=秋天 4=冬天 yr：年份，(0: 2011, 1:2012)\n",
    "\n",
    "  mnth：月份( 1 to 12)\n",
    "  hr：小时 (0 to 23) （只在hour.csv有，作业忽略此字段）\n",
    "  holiday：是否是节假日\n",
    "  weekday：星期中的哪天，取值为0～6\n",
    "  workingday：是否工作日\n",
    "  1=工作日 （非周末和节假日） 0=周末\n",
    "  weathersit：天气\n",
    "  1：晴天，多云 2：雾天，阴天 3：小雪，小雨 4：大雨，大雪，大雾\n",
    "  temp：气温摄氏度\n",
    "  atemp：体感温度\n",
    "  hum：湿度\n",
    "  windspeed：风速\n",
    "  casual：非注册用户个数\n",
    "  registered：注册用户个数\n",
    "  cnt：给定日期（天）时间（每小时）总租车人数，响应变量y\n",
    "  注意：蓝色标记的后三个特征均为要预测的y，作业里只需对cnt进行预测\n",
    "  黑色标记的特征为输入特征x\n",
    " \n",
    "4. 1) 训练数据和测试分割（ 请将 2012 年的数据 作为测试）；（ 20 分）\n",
    "  2) 适当的特征工程 （及数据探索） ;（20 分）提示：\n",
    "    a) 有些特征看起来是数据值，其实类别型如月份、季节\n",
    "    b) 数值型特征归一化\n",
    "    c) 可以丢弃一些不 必要的特征\n",
    "  3) 岭回归，并选择最佳的正则参数； （30分）\n",
    "    a) 参数调优\n",
    "    b) 结果可视化\n",
    "  4) LassoLasso LassoLasso，并选择最佳的正则参数 ；（ 30分 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1.导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np  # 矩阵操作\n",
    "import pandas as pd # SQL数据处理\n",
    "\n",
    "from sklearn.metrics import r2_score  #评价回归预测模型的性能\n",
    "\n",
    "import matplotlib.pyplot as plt   #画图\n",
    "import seaborn as sns\n",
    "\n",
    "# 图形出现在Notebook里而不是新窗口\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 数据探索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# path to where the data lies\n",
    "\n",
    "data = pd.read_csv(\"G:/data/Bike-Sharing-Dataset/day.csv\")\n",
    "\n",
    "#通过观察前5行，了解数据每列（特征）的概况\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 数据基本信息\n",
    "\n",
    "样本数目、特征维数 每个特征的类型、空值样本的数目、数据类型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(731, 16)"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3 数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.495385</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>848.176471</td>\n",
       "      <td>3656.172367</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>211.165812</td>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.183051</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>686.622488</td>\n",
       "      <td>1560.256377</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>183.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337083</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>315.500000</td>\n",
       "      <td>2497.000000</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.498333</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>713.000000</td>\n",
       "      <td>3662.000000</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>548.500000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.655417</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>1096.000000</td>\n",
       "      <td>4776.500000</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>3410.000000</td>\n",
       "      <td>6946.000000</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          instant      season          yr        mnth     holiday     weekday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean   366.000000    2.496580    0.500684    6.519836    0.028728    2.997264   \n",
       "std    211.165812    1.110807    0.500342    3.451913    0.167155    2.004787   \n",
       "min      1.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "25%    183.500000    2.000000    0.000000    4.000000    0.000000    1.000000   \n",
       "50%    366.000000    3.000000    1.000000    7.000000    0.000000    3.000000   \n",
       "75%    548.500000    3.000000    1.000000   10.000000    0.000000    5.000000   \n",
       "max    731.000000    4.000000    1.000000   12.000000    1.000000    6.000000   \n",
       "\n",
       "       workingday  weathersit        temp       atemp         hum   windspeed  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     0.683995    1.395349    0.495385    0.474354    0.627894    0.190486   \n",
       "std      0.465233    0.544894    0.183051    0.162961    0.142429    0.077498   \n",
       "min      0.000000    1.000000    0.059130    0.079070    0.000000    0.022392   \n",
       "25%      0.000000    1.000000    0.337083    0.337842    0.520000    0.134950   \n",
       "50%      1.000000    1.000000    0.498333    0.486733    0.626667    0.180975   \n",
       "75%      1.000000    2.000000    0.655417    0.608602    0.730209    0.233214   \n",
       "max      1.000000    3.000000    0.861667    0.840896    0.972500    0.507463   \n",
       "\n",
       "            casual   registered          cnt  \n",
       "count   731.000000   731.000000   731.000000  \n",
       "mean    848.176471  3656.172367  4504.348837  \n",
       "std     686.622488  1560.256377  1937.211452  \n",
       "min       2.000000    20.000000    22.000000  \n",
       "25%     315.500000  2497.000000  3152.000000  \n",
       "50%     713.000000  3662.000000  4548.000000  \n",
       "75%    1096.000000  4776.500000  5956.000000  \n",
       "max    3410.000000  6946.000000  8714.000000  "
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 去除无效特征\n",
    "1. instant 记录\n",
    "2. dteday  日期\n",
    "3. temp 温度，保留体感温度\n",
    "4. casual：非注册用户个数\n",
    "5. registered：注册用户个数\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           season          yr        mnth     holiday     weekday  workingday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     2.496580    0.500684    6.519836    0.028728    2.997264    0.683995   \n",
       "std      1.110807    0.500342    3.451913    0.167155    2.004787    0.465233   \n",
       "min      1.000000    0.000000    1.000000    0.000000    0.000000    0.000000   \n",
       "25%      2.000000    0.000000    4.000000    0.000000    1.000000    0.000000   \n",
       "50%      3.000000    1.000000    7.000000    0.000000    3.000000    1.000000   \n",
       "75%      3.000000    1.000000   10.000000    0.000000    5.000000    1.000000   \n",
       "max      4.000000    1.000000   12.000000    1.000000    6.000000    1.000000   \n",
       "\n",
       "       weathersit       atemp         hum   windspeed          cnt  \n",
       "count  731.000000  731.000000  731.000000  731.000000   731.000000  \n",
       "mean     1.395349    0.474354    0.627894    0.190486  4504.348837  \n",
       "std      0.544894    0.162961    0.142429    0.077498  1937.211452  \n",
       "min      1.000000    0.079070    0.000000    0.022392    22.000000  \n",
       "25%      1.000000    0.337842    0.520000    0.134950  3152.000000  \n",
       "50%      1.000000    0.486733    0.626667    0.180975  4548.000000  \n",
       "75%      2.000000    0.608602    0.730209    0.233214  5956.000000  \n",
       "max      3.000000    0.840896    0.972500    0.507463  8714.000000  "
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "del data['instant']  # 删除记录索引列\n",
    "del data['dteday']  \n",
    "del data['temp']  # 删除温度，保留体感温度\n",
    "del data['casual']  # 删除非注册用户数，与本次训练无关\n",
    "del data['registered']  # 删除注册用户数，与本次训练无关\n",
    "data.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3数据准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('shape of x train:', (365, 9))\n",
      "('shape of y train', (365L,))\n",
      "('shape of y train_data', (365, 11))\n",
      "('shape of x test:', (366, 9))\n",
      "('shape of y test:', (366L,))\n",
      "('shape of y test_data', (366, 11))\n"
     ]
    }
   ],
   "source": [
    "#选取2011年的数据作为训练数据\n",
    "train_data = data[data.yr ==0]\n",
    "\n",
    "#删除 年，y\n",
    "X_train = train_data.drop(['yr','cnt'], axis = 1)\n",
    "y_train = train_data['cnt'].values\n",
    "\n",
    "#用于后续显示权重系数对应的特征\n",
    "columns = X_train.columns\n",
    "\n",
    "print(\"shape of x train:\", X_train.shape)\n",
    "print(\"shape of y train\",y_train.shape)\n",
    "print(\"shape of y train_data\",train_data.shape)\n",
    "\n",
    "\n",
    "#选择2012年的数据为测试数据\n",
    "test_data = data[data.yr == 1]\n",
    "\n",
    "X_test = test_data.drop(['yr','cnt'], axis = 1)\n",
    "y_test = test_data['cnt'].values\n",
    "\n",
    "print(\"shape of x test:\", X_test.shape)\n",
    "print(\"shape of y test:\",y_test.shape)\n",
    "print(\"shape of y test_data\",test_data.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.4数据标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 分别初始化对特征和目标值的标准化器\n",
    "ss_X = StandardScaler()\n",
    "ss_y = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征以及目标值进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)\n",
    "X_test = ss_X.transform(X_test)\n",
    "\n",
    "#对y做标准化不是必须\n",
    "#对y标准化的好处是不同问题的w差异不太大，同时正则参数的范围也有限\n",
    "y_train = ss_y.fit_transform(y_train.reshape(-1, 1))\n",
    "y_test = ss_y.fit_transform(y_test.reshape(-1, 1))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.1线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of RidgeCV on test is 0.672623380857\n",
      "The r2 score of RidgeCV on train is 0.755789255258\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "# 使用默认配置初始化\n",
    "lr = LinearRegression()\n",
    "\n",
    "# 训练模型参数\n",
    "lr.fit(X_train, y_train)\n",
    "\n",
    "# 预测\n",
    "y_test_pred_lr = lr.predict(X_test)\n",
    "y_train_pred_lr = lr.predict(X_train)\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print 'The r2 score of RidgeCV on test is', r2_score(y_test, y_test_pred_lr)\n",
    "print 'The r2 score of RidgeCV on train is', r2_score(y_train, y_train_pred_lr)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 定义打印散点图函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [],
   "source": [
    "def print_scatter_diagram(y, y_pred, dataset_name,x_label,y_label):\n",
    "    plt.figure(figsize=(4, 3))\n",
    "    plt.scatter(y, y_pred)\n",
    "    plt.plot([-3, 3], [-3, 3], '--k')   #数据已经标准化，3倍标准差即可\n",
    "    plt.title(dataset_name)\n",
    "    plt.axis('tight')\n",
    "    plt.xlabel(x_label)\n",
    "    plt.ylabel(y_label)\n",
    "    plt.tight_layout()\n",
    "    return"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 打印训练集散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xf085940>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print_scatter_diagram(y_train, y_train_pred_lr,'Dataset of Train','true count','predicted count')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 打印测试集散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xeb7de48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print_scatter_diagram(y_test, y_test_pred_lr,'Dataset of Test','true count','predicted count')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('The r2 score of RidgeCV on test is', 0.67078761393905595)\n",
      "('The r2 score of RidgeCV on train is', 0.75535910969158504)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import  RidgeCV\n",
    "\n",
    "#设置超参数（正则参数）范围\n",
    "alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "#n_alphas = 20\n",
    "#alphas = np.logspace(-5,2,n_alphas)\n",
    "\n",
    "#生成一个RidgeCV实例\n",
    "ridge = RidgeCV(alphas=alphas)\n",
    "\n",
    "#模型训练\n",
    "ridge.fit(X_train, y_train)\n",
    "\n",
    "#预测\n",
    "y_test_pred_ridge = ridge.predict(X_test)\n",
    "#y_test_pred_ridge += mean_diff\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print (('The r2 score of RidgeCV on test is'), r2_score(y_test, y_test_pred_ridge))\n",
    "print (('The r2 score of RidgeCV on train is'), r2_score(y_train, y_train_pred_ridge))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 打印训练集散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xdcadf28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print_scatter_diagram(y_train, y_train_pred_lr,'Dataset of Train','true count','predicted count')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 打印测试集散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAARgAAADQCAYAAADcQn7hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJztnXmcFNW1+L+nhx5mWIcBRBhW0bBv\nCsoTkWhElCAZBTUYfYagRqNRiaL4kxfQ6IM8ngm4xpgQjUEkapxHQAUNoIhBA7K5QFRkG0CGpVkH\nZju/P6oam6aru7qnu2um534/n/pMdy33nu6eOnXvOeeeI6qKwWAwpAKf1wIYDIbMxSgYg8GQMoyC\nMRgMKcMoGIPBkDKMgjEYDCnDKBiDwZAyjIIx1ApE5DYR+UZEDotIc6/lMbjDKJhajIhsFpFSETkk\nIgER+UBEbhURV7+riHQUERWReimWs1r9iIgf+A1wqao2UtW9IccG20rnsIgcsfs5HLK1T7DPHLut\ntolcb7BI6T+WIS1coarviEhTYAgwEzgPGOutWEmlFZADfBp+QFWXAY3AUmTA10CeqlakUT6DA2YE\nkyGo6gFVnQdcC9woIj0BROT7IrJaRA6KyDYRmRJy2Xv234D9tP8PEeksIotFZK+I7BGR2SKSF7xA\nRO4XkWJ71LRRRL5n7/eJyEQR+cq+9q8iku/UT7j8IlJfRGaIyA57m2Hv+w6wMeT6xfF+NyKSLyJ/\nFpFd9ncwOTjKE5GuIvK+iBwQkRIR+XOYzBttmQvj7dcAqKrZaukGbAYuibB/K3Cb/fq7QC+sh0lv\n4Bug0D7WEVCgXsi1ZwJDgfpAS6wbbYZ9rAuwDWgTcn1n+/XdwAqgrX3ts8Acp34iyPywff1pdr8f\nAL9ye32084A3gSeABkBrYDVwo33sdeBeQIBcYJC9P8duq63Xv3Nt3swIJjPZAeQDqOpSVV2vqlWq\nug6YgzWVioiqfqmqb6vqcVUtwbJ9BM+vxFIe3UXEr6qbVfUr+9hPgQdVdbuqHgemAKPjsLv8CHhY\nVXfb/T4E3BDXp46AiHQALgR+oapHVXUn8DjwQ/uUcizFdLqqlqrq8ur2afgWo2AykwJgH4CInCci\nS+zh/wHgVqCF04UicpqIvGxPgw4Cfwmer6pfYo1UpgC77fPa2Jd2AF63jc0B4HMshdTKpcxtgC0h\n77fY+6pLB6zRSEmIbDND5BqPNbJZLSLrROT6JPRpsDEKJsMQkQFYCuZ9e9dLwDygnao2BX6HNR0A\nawoQzlR7f29VbQJcH3I+qvqSql6AdeMq8Gv70DbgclXNC9lyVLXYoZ9wdthtBmlv76su24DDQLMQ\nuZqo6tn25ylW1Z9gTZ3uBGbZnieTZiAJGAWTIYhIExEZAbwM/EVV19uHGgP7VPWYiJwLXBdyWQlQ\nBZwRsq8x1g0ZEJECYEJIH11E5GIRqQ8cA0qxRilgKa5H7SkJItJSRH4QpZ9w5gCT7OtaAL/EGj1V\nC1X9Gsu28z8i0tg2Rp8lIhfYcl4rIm3UMrwE7Msq7GnegRgyG2LhtRHIbIlvWEbeUuAQ1s3wT+B2\nICvknNFY041DwHzgSSwFFDz+MJYCCAADgR7AKiwlswa4B9hun9sb+Mhua5/dXtDg6wN+geXxOQR8\nBfy3Uz8RPksOlm1kp709DuTYxzpSPSNvPvAcUGz3/zEwyj42w+7vMPAF8OOQ6+7EMooHgJFe/961\ncRP7izQYDIakY6ZIBoMhZRgFYzAYUoZRMAaDIWUYBWMwGFJGrVrs2KJFC+3YsaPXYhgMdZ5Vq1bt\nUdWWsc6rVQqmY8eOrFy50msxDIY6j4hsiX2WmSIZDIYUYhSMwWBIGZ4pGDtj2EcislZEPhWRh7yS\nxWAwpAYvbTDHgYtV9bCdEvF9EXlTVVd4KJPBYEgino1g1OKw/dZvb2bdgsHgAYFAgGXLliW9XU9t\nMCKSJSJrgN3A26r6YYRzbhGRlSKysqSkJP1CGgwZzoIFC+jRowdXXnklR44cSWrbnioYVa1U1b5Y\naRbPDeaRDTvn96raX1X7t2wZ0+1uMBji4MEHH2TEiBHk5+ezcOFCGjZsmNT2a0QcjKoGRGQpcBnw\nicfiGAwZT1VVFT6fj0svvZSsrCwmTZpEdnZ20vvx0ovUMpitXkRygUuADV7JYzDUBfbu3cv111/P\nfffdB8CQIUN4+OGHU6JcwNspUmtgiYisA/6FZYOZ76E8BkNGU1RURI8ePZg7dy5NmzZNS5+eTZHU\nynDfz6v+DYa6wp49e7jzzjuZM2cOffr04a233qJv375p6dtE8hoMGU5JSQnz58/noYce4l//+lfa\nlAvUECOvwWBILiUlJbz88sv8/Oc/p1u3bmzZsoVmzZqlXQ4zgjEYMoxXX32VHj16cM8997Bxo1V1\n1wvlAkbBGAwZw+7du7nmmmu4+uqrad++PatWraJLly6eymSmSAZDBlBVVcWQIUPYtGkTU6dO5d57\n76VePe9vb+8lMBgMCVNSUkJ+fj5ZWVnMmDGDdu3a0b17d6/FOoGZIhkMtRBVZc6cOXTr1o0nnngC\ngGHDhtUo5QJGwRgMtY5du3Zx1VVXcd1113HmmWcybNgwr0VyxCgYg6EWMW/ePLp3786bb77J9OnT\nWb58Od26dfNaLEeMDcZgqEXk5eXRvXt3/vCHP9C1a1evxYmJUTAGQw1GVXnxxRf5+uuvmTx5Mhde\neCHLli1DRLwWzRVmimQw1FCKi4u54ooruPHGG1m8eDHl5eUAtUa5gFEwBkONQ1V5/vnn6dGjB4sX\nL2bGjBksXrwYv9/vtWhx42U+mHYiskREPrerCtzllSwGQ01i69at3HrrrfTu3Zt169Zx1113kZWV\n5bVYCeHlCKYCuEdVuwEDgdtFpGY58Q2GNKGqvPPOOwB06NCBDz74gKVLl3LmmWd6LFn18LKqwE5V\n/dh+fQj4HCjwSh6DwSu2bt3KZZddxtChQ08ombPPPhufr/ZbMGrEJxCRjljJp0xVAUOdQVV57rnn\n6NmzJ8uXL+fJJ5/k4osv9lqspOK5ghGRRsBrwN2qejD8uKkqYMhUrrvuOm655Rb69+/PunXruP32\n2zNi1BKKp3EwdkXH14DZqvo3L2UxGNKBqqKq+Hw+Ro0axZAhQ7jlllsyTrEE8UzBiOXM/yPwuar+\nxis5DIlRtLqY6Qs3siNQSpu8XCYM60JhP2NCi8bmzZsZN24cI0aMYPz48YwePdprkVKOl2pzEHAD\ncLGIrLG34R7KY3BJ0epiHvjbeooDpShQHCjlgb+tp2h1sdei1Uiqqqp45pln6NmzJx999BF5eXle\ni5Q2vKwq8D5Qe0ISDSeYvnAjpeWVJ+0rLa9k+sKNjqOYujri+frrrxk3bhxLlixh6NChPPfcc3To\n0MFrsdKGWYtkiJsdgdK49gdHPEGlFBzxABmvZLZv387HH3/Mc889x7hx42pVmH8yiDlFEpFfu9ln\nyHyKVhczaNpi1OF4m7zciPujjXjc9tlp4gIGTVscdRoWz7mp5KuvvuLZZ58FYPDgwWzdupWbbrqp\nzikXcDeCGQrcH7bv8gj7DBlM+CgknFx/FhOGRU4w7XbEEz6NuqhrS15bVXzSyGf83DWs3LKPRwp7\nRZXPi1FSVVUVTz75JBMnTiQnJ4err76a/Px8mjRpkpb+ayKOCkZEbgN+Bpxhl3cN0hhYnmrBDDWL\nSKOQIAUxbCpt8nIpjqBkmub6GTRtMTsCpeQ18HP4WAXlVdb4qDhQyuwVW08ZLSkwe8VW+nfIP6m/\nROxCyeSLL75g3LhxLFu2jOHDh/Pss8+Sn5+f8n5rOtGmSC8BVwDz7L/B7RxVvT4NshlqEE6jEAGW\nT7w46k08YVgXcv0nL9bz+4QjZRUnPFH7j5afUC5BnKZiCqdMr5zkKw6UpnyqdPjwYQYOHMi6det4\n/vnnmT9/Pm3btk1pn7UFxxGMqh4ADgBjRCQLaGWf30hEGqnq1jTJaKgBOI1CnOwuoQSVz/SFGykO\nlJIlcooyiZdwheIkH5CyqdKOHTto06YNjRo14o9//CMDBgygoCCzjdbx4sbIewfwDfA2sMDe5qdY\nLkMNI9IoJJrdJZzCfgUn2qjU6ikXOFmxFa0u5sjxCsdz3RqU3VJZWcljjz1G586defXVVwEoLCw0\nyiUCboy8dwNdVHVvqoUx1FxCRyGJxrJEs+NEItefxdntm/LBV/tOmi4FFVvR6mIe+vun7D9aHrOt\n4IinuvE4GzZsYOzYsaxYsYKRI0cyaNAg19fWRdwomG1YUyVDHaewX0G1phlOdpJIZIkw9apeFPYr\nYFLReuZ8uI1KVbJEGHWOJUM0r1Y4bfJyI3qa7p67hgdfX8+jV/aK+dmeeeYZxo8fT8OGDZk9ezZj\nxoypk67neHCjYDYBS0VkAXA8uNOsHzLESzQ7SThVqhT2K6BodTGvrSo+Ma2qVOW1VcUsWLczrtFQ\nx+a5jiOoI2WV3B3i/nYa5eTn5zN8+HCefvppTj/9dNd912VEY8yHRWRypP2q+lBKJIpC//79deXK\nlenu1pAkYsXShFKQl8vyiRczaNpi10op2WhVJQc/ep3snByenTqJH/RtA8D/rdlRJ5c9hCIiq1S1\nf6zzYo5gvFAkhswkeBPePXdN1PP8PuFoWQWdJi5wdFWnmrKSLex9cwZlO7+gYY+LmDLvkxMjqgmv\nrqW88tt4nQmvrgUyf9lDIsRUMCKyhAghCaqaWam3DCkldNqRJeLoScrL9XOkrCKm4TYv18/xiqq4\npklu0KpKDn74GoHlL+HLbkCLkffToOsFBEorThiVg8olSHml8tDfPzUKJgJubDD3hrzOAUZhJew2\nGFwRPjWKpFxy/VlMvaoX0xduJFAaXbkIMGVkD1Zu2Rcx2rc6lO36ksB7L9KgyyDyh95KVsNvUytM\nX7jRUfG58WTVRdxMkVaF7VouIu8mo3MRmQWMAHaras9ktGmoeTgZV7NEqFI9yY4xPsb0Cb4dTs/9\n17akKBetrODY1vXkdupH/TZdaD12JtmnnXHKefF4wQwWbqZIoQsqfMA5QLJM6M8DTwJ/TlJ7hhqI\n041ZpcrX075/0j43nqaCPMsjFD5VSYSy3V+z940ZlH2ziTY3PY2/ebuIygVABJx8Inm5ta8oWjpw\nk9FuFbDS/vtP4B5gXDI6V9X3gH3JaMtQc3FaThBpf6SI4VD8PmHCsC7VHk1oZTmB919i5wt3U3Fo\nLy0LH8DfvF3Ua5xWN/h9wpSRPaolT6biZorUKR2COCEitwC3ALRv395LUQwJMmFYl1Pc007LDIKG\n0nv+ujairaZRTj0K+xWcWNeUCKpVfPPSAxzfsYEG3YeQf8lPycpNLKVC+Eryupq5zwk3UyQ/cBtw\nob1rKfCsqqbFqqWqvwd+D1YcTDr6NCSXRJYZOHmZArYxdcKwLtzzyloq41g0qVWViC8LER8Ne11C\nk/NG0eA7/xHHJzmZ4EryIDUhJ01Nw02g3R8AP/CCvesGoFJVb0qKAFbRtflujLwm0C7ziRWMFwzA\nA+j70KKYHqcgZd98xZ4Fv6Xp+T+kYdcLkiZvXq6fEX1as2RDSdQRVaycObWNpAXaAQNUtU/I+8Ui\nsjZx0QwGZ6ItiBSsUcGgaYuZMKwLB1woF60o58AHL3NgxStkNczDlx07vUQ8BErL+cuK2JlL6upo\nxo2Rt1JEOgffiMgZQFKim0RkDpbhuIuIbBeRpBiPDbWXaMbb4Fg7NHo2Gsd3fcnOF+7mwD/n0rDH\nRbQe9zS5Z5yTJEnjJ9lpI2oDbkYwE4AlIrIJ6yHSARibjM5VdUwy2jHUXiYVrT8pWM7t2mQ3LuqK\n/TuoOnaIlqMn06DzgIRlTCZ1LZbGjRfpHyJyFtAF6/ffoKrHY1xmMMRkUtH6U6YX1bXiH9/5b8r3\nbqdRz4tp0HUwuZ0HJH1aVB3cZADMJNxktLsdyFXVdaq6FmggIj9LvWiGTGfOh9uS1pZWlLF/6fPs\nevFeDnzwMlpZgYicpFwEGNQ5PYm4rx/YvloZADMFN1Okm1X1qeAbVd0vIjcDT6dOLENNIhmxHZHa\nSEbqTIDjOzayZ8Fvqdi3nUa9L6XZxeOQrFP/tZvm+rm6f3tWbw1wtLwqKX1HIi/XzyOFvejfIb/O\nx8S4cVOvA/qofaKdAHydqqY9dNG4qdNPJLdxcGGi25vFqY1j5ZXVnhJVHNxN8bM3k9Uwn+aX3RHT\niCskPg1rFlZaJRLxfje1FbduajdepIXAX0XkeyJyMTAHeKu6AhpqB9WpyhirjQbZzksCYlFxcDcA\n9ZqcRosR99Jm3FOuPESJKJdBnfPZPO37NMiuF1W55OX664RyiQc3U6T7sUL1b8N6ACwC/pBKoQyp\nJZ4pT7x1qOM592hZJdcPbO8qjiRIVfkxAsv+wqFVf6fVmKnktO1Ow26DXV8fLwLMvtmK9o32mWdc\n29colgi48SJVAb+zN0MtJ95w9njqIYVn+c/L9TNlZI+olR2XbChxLfux7Z+y942ZVOzfQaO+l5Pd\nsqPraxNFgU4TF9AmL5emuf6IkcMFeblGuTjgZopkyCDinfK4rYcUTCUZmngpUFrOhFfWclHXlhFX\nSAdKy10vWNz/7gt8M3siWlnBadc+QvNht+Or38DVtdVFsRTxkbIK/L6TI3XqomcoHoyCqWPEO+Up\n7FfA1Kt6UZCXi2A9rSPZGabMOzWVJEB5lbJkQwlTr+pVrZwpWQ2a0qjfcNr85ElyO/ZNuJ3qUF6p\nNMqpF/O7MHyLGxuMIcWkc4l/IiVgY9VDKlpdHHXRYXGglJVb9tGwfj3XixOryo4ReO8F6hdYNpYm\nAwpdXZdqAkfLWf3LS0/aZ1I0OOOoYETk70QxuqvqyJRIVMdI9xL/eHKzuMWNRykeQ+6xrevZ++ZM\nKgK78NVvCKTOiBsv4YrYpGiITrQRzP/af6/CSpH5F/v9GGBzCmWqU0SziaTiHzRSbpaLurZk+sKN\njJ+7JuoT2OlJnaz1NVVlpQTefYFDH8+nXt7plpeofa+ktB0vkaoWRFLE6f79ahuOCkZV3wUQkV+p\n6oUhh/4uIu+lXLI6QjLcwPESOuVx+wSOdl48FRujcWzzGg59vIDG54wk78L/xJedU+02g2SJ8NXU\n4cC3itJJ5mDVAoidJMuL36824cYG01JEzlDVTQAi0glomYzOReQyYCaQBfxBVaclo93aRCI2kVjE\nYxNw+wSOdt5FXVsmXD6k6vhRju/8N7kd+5J71kBa/+RJslt2SKCl6IQuSwgq2EgRxgL8aGD7E589\n1igkFb9fJuHGizQeqzb1UhFZCiwB7q5ux/aSg6eAy4HuwBgR6V7ddmsbbt3AbgneNMWB0hPu1Qf+\ntp6i1cURz3f7BHY6rzhQymurihNSLqWb17Bj1h2U/O1XVJYeRERSolzA8viEE8lD9ttr+/JIoftp\nWbJ/v0zDTaDdW3a6hq72rmSlazgX+DJkZPQy8APgsyS0XWtIJF9tNOK1CTgFj4U/gZ3O8wlxV1es\nOn6U/UtncXjNW9TLL+C0ax5JOOl2OA2zszhSdqo8F3WNPOiO5SGLRbJ/v0zDTdLvBsAvgA6qerOI\nnCUiXVR1fjX7LgBC1+tvB86L0H/GVxWo7j95KPHYBIpWF3Ok7NQinT6BI8crTkSwXtS1JYeORy7m\nGUfObev8smPs+NPPqTxYQpNzr6LpBT/C568fXyNRiKRcgLgihuMlmb9fpuHGBvMnrJpIwfTr24FX\ngOoqmEjJyyLVwM74qgKxbCbx2FTisQk4FS+rUk6MVooDpUkpz6qV5UiWH192Dk3O/j71C7pRv6Bb\nNVt1T3GglKLVxUYRpBk3Cqazql4rImMAVLVURNxmNozGdiC00lVbYEcS2q1VxPLixBtnES3OJVxR\nufX8VFe5lG5axd6FT9HiinvIaduDJudeVc0WI5Prz6J+PZ9jMJ+JT0k/boy8ZSKSi/1/ZicAT4YN\n5l/AWSLSSUSygR8C85LQbq0i1tqgWMeLVhczaNpiOk1cwKBpiwEihvYDpxh/k/GUiEbVscPseWMm\nu1+ZjM9fH8nKTllfwc85ZWQPx8qQdTHptte4GcFMwcr/0k5EZgODSELSb1WtEJE7sPLNZAGzVPXT\n6rZb24hlM4l23Gl0M/WqXicVBAMYNG3xKYoqlfPN0k2r2Pvm41Qe2U+TgVeTN2gMUi81CiY4Qgsd\nmdw9d03Ec018SnqJOYJR1UVY0bw/xko21V9VlySjc1V9Q1W/o6qdVfXRZLRZ24hVtznacafRzd1z\n1zBo2uKTXNPpvrHK92zFl9OQ02/4X5oNuTFlygVOHZkU9iuI6JaG+OJTwkeHTq5+gzNukn7/Q1X3\nquoCVZ2vqntE5B/pEC6TCf7zRpqqhMZRRIuziKY0wuNfnG6srKSY0yyOfvkRR79YAUDj/iNpfeNM\n6rf+TtLaj0b4d1Hd+JR444kMkXFUMCKSIyL5QAsRaSYi+fbWEWiTLgEzkdB/XrCmKsHbPDwFQLR0\nCbGexqFPdqcbbsx57RxtFm5o1sBP5bHD7Jn/GCWvPczBlfNQVasGdD336Rmc9Fxert+VfOHfhds0\nE04kI1WoIboN5qdYEbttsNzUwX+Bg1gRuIYEifTPq5xcdzkUpziLSB6jcIJP9mgBYcHs98WBUrJE\nXGf7z/VncXmTYv5n+r1UHgnQ9Pwf0vQ/riURJ+Nvr+kb0fsVviYoL0LibaeRSXXiU8wao+QQbbHj\nTGCmiPxcVZ9Io0w1ilTk+kjWP2+o0nByOYc+2Z1uuOC+WMoqlCwRAps/Zeoj9+Jv2ZGWo35J/dPP\njEv+IM0a+GNGxCYaF5ToNWaNUXJwU7bkdmC2qgbs982AMaqa9rpI6S5bkoySHZEI2l7CcRrBpFrW\notXFjP/rGtyWKaoI7KJe3ukAHPnsXRp0OR/JSjxbXXjC7GQr9US+m1T99plCMsuW3BxULmAVXgNu\nro5wtYVUzcNTsUAuUZvDpKL13D3XnXKpPHqAknnT2fHHn1G+zzJ2Nuw+xFG5BCspRjMkN8zOipgW\nItS4OuHVtfR9aFHC3pxEfsfq2nAMFm7iYHwiImGF11Lnc6wmyXz6pWoeHpQnNAN//XrVT48cj80h\nvAJALI5u/IC9i56m6thhmp5/LfWatop6frCiQGG/AjpNXOB43qNX9johj9NUr7xST1q6EG9EbqK/\no1ljVH3cKJhg4bXfYdkib6WGFl5LdvrCVM/Dj4WULw2UlicllN2Ngo00/HdCtYo9f3+Mo5+/S3ar\nzjS/9ldkn9Yp5nWhiyidvse8XL9jXpZoxJsxzthTvMPNY/N+YDFW4bXbgX8A96VSqERJ9pQmlbk+\nkilrMKam48QFjJ+7JmbsRqS+nRDxUa9pS/IG38DpNzxG9mmdXC0xKK/UmC7yUA9RvCkf4hlFmpwt\n3uG28Noz9lajSfaUJpW5PpIla/jTP9yUEozsnb5wo+scupVHAux751kan/19ctr1pNmQH584luvP\nYtQ5BSzZUBJzsaQbF3noefEQz+jD5GzxjmhVBf6qqteIyHoip1HonVLJEiAVQ+FUzcOTJavbp39x\noJS7565xXKMDoKoc3fA++95+hqqyo+R07EtOu54njmeJnGTo7BjFtgLuXOTB85yUVaSC84mMPow9\nxRuiTZHusv+OAK6IsNU4atNQOFmyJivwq/LIfvYUTWXPvF9TL68VrW+cSeM+w04657Fr+px0k0Yr\npObPEtefxem7mHFtX1b/8lKmX93HeHNqKdEC7Xbaf7ekT5zqUVOGwm4MrcmQtWh1seULTsKy6CMb\n3ufoVx+RN+THNDn3SsR38g1/fUgi7CBTRvZgwitrTxpdgOV6fvRK90rATZCdUSi1E8dAOxE5RPTC\nawknURWRq7HSQHQDzlVVV9Fz6Q60S4R0BWgFa0FHykjnlsrD+ynfX0xOu55oVSUVB77B3yzyMrPN\n077vKIfXCt2QftwG2kUbwTS2G3oY2AW8iF3VAWhcTfk+wUoB8Ww126lxpLoQV6yaPm5QVY58tpT9\n7zyL+HMo+OlzSJbfUbk4pT4AM7owRMdNHMwwVQ1Nxv2MiHwI/E+inarq50BCi+JqOqlcJBdvvEgk\nKg7tZd+ipyj98iPqF3Sj+eV3RQ3zz/VncVHXlgyattiMUgxx40bBVIrIj4CXsaZMY4DE/8PjpLZV\nFXAMKmuQ+FqdIInEi4RScXAPO2fdjlaW0+zim2h8zhWn2FpCKbArCry2qtjUXjYkhJtAu+uAa4Bv\n7O1qe19UROQdEfkkwvaDeARU1d+ran9V7d+yZVIKSqaUCcO64M86dWR2+FhF1DU0brKnJToK0gor\nzL5ekxY0HlBI67FP0GRAYUzlsnzixSzZUGLyohgSxk2g3WasgmhxoaqXJCJQbaewXwFT5n16Smb7\n8ip1tMM4LXFYuWUfSzaUnJiaOBU/c0JVOfLJPwi8+wKtxvw3/ubtyBs0JuZ1oe5ykxfFUB3cFF77\nDlYUbytV7SkivYGRqvpIyqWrpRxwUAJON6WTYTi0HlG8Rt2Kg3vYu/AJjm1aRU7b7uBz/qkbZmfh\nz/JxoLT8FBuLWcdjqA5ubDDPAROwPT6quk5EXgISVjAiciXwBNASWCAia1R1WIzLagVFq4vxOWSF\na5OXG9Gt66R4EnVAH173Nvv+8RxoJS0uuYVvFj7DvLU7E3KfR6uzZDDEwo2CaaCqH4V5fCLXEXWJ\nqr4OvF6dNlJJorEdwalOJOUS9MZEmgrlNfC7TpvghrI9W8hudQbNL7+L7Gat8fl8CQf21ZTgRUPt\nxE1GuzeBO4BXVPVsERkNjFPVy9MhYCjpCLRzcgWH5jdxUkBOmeqCOOW7jRSMG0+ArqpyeO1C/M3b\nWkFzleXgy0LEV60seQaDE9UOtAvhdqza0F1FpBj4GivYLiNxcgUH87Ws3LLP0W0bc5WygzIP39us\ngZ/v927tqiZ0xYHd7H3rCY5tXk3DXkPJadfzRFyLiWExeE1UBSMiPqxCa5eISEPAp6qH0iOaN0RT\nEqXllcz5cNspiiLoto2n3nM0VKF/h3z+smJrlHOUw2vfYv+SWaBK/qU/o1Hfy04cz8v1M6JPaxPD\nYvCUqHEwdi6YO+zXRzJduUA0ZigpAAAMaUlEQVRs74jTKGRHoDRphs9AaTkTXl0b9ZyjG95n38Kn\nqN/6LNqMe4rG/YYj4iNLhBnX9mXN5EtNDIvBc9wE2r0tIveKSLuQ4mv5KZfMIyYM64Lf57yEwSmB\ndZu8XAr7FdDMRcSum2qKkRYxqladSLbdoMv5tPjBRE679tGT8uNWqcZM5GRiWAzpwo2C+QmWHeY9\nrAJsq4CavaS5GhT2K6BRTuSZo0DESoihbtvJV/SIWokw15/FY9f0ibtka3lgF9+8/CC7XryXytKD\niC+Lhl0vOGU9V+gILFbda4Mh1cRUMKraKcJ2RjqE84qAg8tYgUcKe0UtZxFe7qJZAz95uf5TznVb\nPVG1ioOr/s7OWbdTtusr8r47Fl9O5MXs4fEptSkBlyEzcRPJmwP8DLgA6x5bBvxOVY+lWDbPcDLW\nBtMWxEpREOt40eriqCVa/T6hvEqpKj/G7lemcHzbJ+R0Oofml91B/aanUaVKG3shYuhSgnAPkYlh\nMXiNGzf1n4FDWJG3YK2mfhFr0WNGkqroVTe1iJo18DP5ih6s3LKP2Su24s8voFHP79Gw1yU0yK4X\nd+Iqk6/F4CVuFEwXVe0T8n6JiER3cdRyoj35qxvlGy3dQl6un5v75PL0/WN5/PHH6d+hL9Pz7jOj\nD0OtxY2CWS0iA1V1BYCInAcsT61Y3hPpyV+dwm6xcrloVSVb3yvijkdeJDenPps2baJw+HCjUAy1\nGjcK5jzgP0UkGPXVHvg8WM6kJpYvSRXVSYcZzTVcvnc7e9+cyfHiz8ntPIBuV9/D8OHDkyKzweAl\nbhTMZbFPqRs4KYniQCmdJi6IWqrVaYU1wOF1iyjfu43mI+6hYffvslczL5WooW7iJuFUrSlbkmqi\nLQUILdUK306ZnFZYl+/dRlVZKfVbf4emF/yIxgMKqdco/0Q/BkMm4CbQLumIyHQR2SAi60TkdRHJ\n80KOeIkUVxJOeCh++LRKqyo58OFr7PzTnfj+OYucej58/vonlIuJUzFkEp4oGOBtoKdtv/k38IBH\ncsRFeBCdE6FTqdDX5Xu2sesv9xFY+idyzziHVe+9zbRRvU3VQkPG4sYGk3RUdVHI2xXAaC/kSIRQ\n75JT/pfwcP3iQCnHd37Brtn34cvOpcUVE2jQ7UJGPf8ZE4Z1MflaDBmLVyOYUH4CvOl0UERuEZGV\nIrKypKQkjWLFxk0o/p1D2pPrzyK71Rk0PW8UbcY9RcPuQxCREzabaNUGDIbaTMoUjJuyJSLyIFb6\nzdlO7SS7bImb8iBuCZ8yhU5xKioqmDp1Kr8YPYT7h5xO2/xG5A2+nqyGzU5qw6RPMGQyKZsixSpb\nIiI3AiOA72msvJ1JojqBck5ECshbv349Y8eOZdWqVVxzzTWM6NuWH1/Sl04TF0TMUGfSJxgyFa+8\nSJcB92OVPzmarn6jBcolA1XlkUce4ZxzzmHr1q288sorzJ07lxYtWgAmfYKh7uGVDeZJoDFWMqs1\nIvK7dHSa6gRMIsInn3zCqFGj+Oyzzxg9+mTbtUmfYKhreOVFOtOLflNRRKy8vJxp06YxevRounXr\nxp///Geys7MjnmvSJxjqGp4oGK9IdhqGNWvWMHbsWNasWYOIMGnSJEflEsSkTzDUJWqCmzptRPP6\nxENZWRlTpkxhwIAB7Nq1i6KiIiZNmpQaoQ2GWkydGsFAckYQM2fO5KGHHuKGG25gxowZ5OdnbA50\ng6Fa1DkFkyjHjx9n27ZtnHnmmdxxxx307t2bYcMyopy2wZAy6tQUKVFWrlxJ//79GTZsGGVlZeTm\n5hrlYjC4wCiYKBw/fpwHH3yQgQMHsm/fPh5//PGYRlyDwfAtZorkwM6dO7nkkkv47LPPGDt2LL/5\nzW/Iy6sVWSUMhhqDGcE40KpVK3r16sUbb7zBrFmzjHIxGBLAKJgQPvzwQwYPHsyuXbvw+Xy8/PLL\nXH755V6LZTDUWoyCAUpLS7nvvvs4//zz2bx5M9u3b/daJIMhI6jzCuaf//wn/fr1Y/r06dx00018\n+umn9O/f32uxDIaMoM4beZ944glKS0tZtGgRQ4cO9VocgyGjqJMKZvny5TRv3pyuXbvy1FNPUa9e\nPRo3jlxQ3mAwJI5X+WB+ZVcUWCMii0SkTTr6PXr0KOPHj2fw4MH813/9FwDNmjUzysVgSBFe2WCm\nq2pvVe0LzAd+meoOly1bRp8+fZgxYwa33XYbs2bNSnWXBkOdx6t8MAdD3jaEiJkkk8a8efMoLCyk\nY8eOLF68mIsuuiiV3RkMBhvPbDAi8ijwn8ABwPGOF5FbgFsA2rdvn1BfQ4cOZfLkydxzzz00atQo\noTYMBkP8SKrybYvIO8DpEQ49qKr/F3LeA0COqk6O1Wb//v115cqVSZTSYDAkgoisUtWY8RyeVRUI\n4SVgARBTwRgMhtqFV16ks0LejgQ2eCGHwWBILV7ZYKaJSBegCtgC3OqRHAaDIYV45UUa5UW/BoMh\nvdT5tUgGgyF1pMyLlApEpARrSpUILYA9SRQnUWqCHDVBBqgZctQEGaD2ydFBVWMWi69VCqY6iMhK\nN261uiBHTZChpshRE2TIZDnMFMlgMKQMo2AMBkPKqEsK5vdeC2BTE+SoCTJAzZCjJsgAGSpHnbHB\nGAyG9FOXRjAGgyHNGAVjMBhSRp1SMF5l0guTYbqIbLDleF1EPCm4JCJXi8inIlIlIml1j4rIZSKy\nUUS+FJGJ6ew7RIZZIrJbRD7xov8QOdqJyBIR+dz+Pe7yQIYcEflIRNbaMjyUtMZVtc5sQJOQ13cC\nv/NAhkuBevbrXwO/9ui76AZ0AZYC/dPYbxbwFXAGkA2sBbp78PkvBM4GPvHi+w+RozVwtv26MfDv\ndH8fgACN7Nd+4ENgYDLarlMjGE1zJj0HGRapaoX9dgXQNt0y2HJ8rqobPej6XOBLVd2kqmXAy8AP\n0i2Eqr4H7Et3vxHk2KmqH9uvDwGfAwVplkFV9bD91m9vSbk36pSCASuTnohsA35EGnIBx+AnwJse\ny5BuCoBtIe+3k+YbqqYiIh2BflgjiHT3nSUia4DdwNuqmhQZMk7BiMg7IvJJhO0HAKr6oKq2A2YD\nd3ghg33Og0CFLUdKcCOHB0iEfXU+VkJEGgGvAXeHjbTTgqpWqpWEvy1wroj0TEa7GVcXSWtAJr1Y\nMojIjcAI4HtqT3xTQRzfRTrZDrQLed8W2OGRLDUCEfFjKZfZqvo3L2VR1YCILAUuA6ptAM+4EUw0\nakImPRG5DLgfGKmqR9Pdfw3gX8BZItJJRLKBHwLzPJbJM0REgD8Cn6vqbzySoWXQmykiucAlJOne\nqFORvCLyGpbn5EQmPVUtTrMMXwL1gb32rhWqmvaMfiJyJfAE0BIIAGtUdVia+h4OzMDyKM1S1UfT\n0W+YDHOA72KlJ/gGmKyqf/RAjguAZcB6rP9LgP+nqm+kUYbewAtYv4cP+KuqPpyUtuuSgjEYDOml\nTk2RDAZDejEKxmAwpAyjYAwGQ8owCsZgMKQMo2AMBkPKMArGcAIRyRORn3ktR6KISEcRuc5rOQzf\nYhSMIZQ8IKKCEZGsNMuSCB0Bo2BqEEbBGEKZBnS28+VMF5Hv2rlKXgLW2yOEE+HjInKviEyxX3cW\nkbdEZJWILBORruGNi0gjEfmTiKy38+GMsvePsfd9IiK/Djn/cMjr0SLyvP36eRF5XEQ+EJFNIjI6\nRP7Btvzjk//1GOIl49YiGarFRKCnvegNEfkuVnqFnqr6tb3a14nfY0VGfyEi5wFPAxeHnfNfwAFV\n7WW338xO+vVr4BxgP7BIRApVtSiGrK2BC4CuWEsNXrXlv1dVR7j8vIYUYxSMIRYfqerX0U6wVwKf\nD7xiLa0BrOUQ4VyCtfYIAFXdLyIXAktVtcRuazZWMqhYCqZIVauAz0SklatPYkg7RsEYYnEk5HUF\nJ0+rc+y/PiAQHPlEQTg1NUOk9A1BQs/NCTt23GUbBg8xNhhDKIew0jY68Q1wmog0F5H6WCkngpkC\nvxaRq8FaISwifSJcv4iQHDwi0gwrudIQEWlhG5LHAO8G+xORbiLiA65MgvyGNGMUjOEEqroXWG4b\nW6dHOF4OPIylFOZz8pL+HwHjRGQt8CmR02A+AjSz218LXKSqO4EHgCVY+Xk/VtX/s8+faPezGNjp\n4iOsAyrs5NXGyFsDMKupDQZDyjAjGIPBkDKMgjEYDCnDKBiDwZAyjIIxGAwpwygYg8GQMoyCMRgM\nKcMoGIPBkDL+P3iOeWnXhWMqAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xc86be10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print_scatter_diagram(y_test, y_test_pred_lr,'Dataset of Test','true count','predicted count')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 Lasso"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2 score of LassoCV on test is 0.595012001199\n",
      "The r2 score of LassoCV on train is 0.684545178524\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import LassoCV\n",
    "\n",
    "#设置超参数搜索范围\n",
    "#alphas = [ 0.01, 0.1, 1, 10,100]\n",
    "\n",
    "#生成一个LassoCV实例\n",
    "#lasso = LassoCV(alphas=alphas)  \n",
    "lasso = LassoCV()  \n",
    "\n",
    "#训练（内含CV）\n",
    "lasso.fit(X_train, y_train)  \n",
    "\n",
    "#测试\n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "\n",
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print 'The r2 score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso)\n",
    "print 'The r2 score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 打印训练集散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xd3281d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print_scatter_diagram(y_train, y_train_pred_lr,'Dataset of Train','true count','predicted count')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 打印测试集散点图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0xee7f4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print_scatter_diagram(y_test, y_test_pred_lr,'Dataset of Test','true count','predicted count')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
